Wireless clock regeneration and synchronization

ABSTRACT

A method and apparatus are described for regenerating a local clock within a wireless module and synchronizing the local clock with a wireless host clock. For one embodiment, the wireless module generates a local clock, counts the cycles of the clock during a common timing reference period maintained wirelessly between the wireless module and the host, receives a count of the host clock during the same common timing reference period, and adjusts the local clock signal based upon a comparison of the two counts. For one embodiment, the wireless module further receives timing references from the host and, in addition, receives packets of audio samples from the host accompanied by a timestamp, the timestamp based upon the host timing reference, and outputs the audio sample at the time designated by the timestamp.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of co-pending U.S. patent applicationSer. No. 13/959,683, filed Aug. 5, 2013, and entitled, “Wireless ClockRegeneration and Synchronization,” which is a continuation of U.S.patent application Ser. No. 12/244,670, filed Oct. 2, 2008, now U.S.Pat. No. 8,503,596, and entitled “Wireless Clock Regeneration andSynchronization,” all of which is incorporated by reference herein inits entirety for all purposes.

FIELD

Embodiments of the present invention relate generally to an audio/videosystem with a wireless host communicating with wireless speakers. Moreparticularly, these embodiments relate to regenerating and synchronizinga host clock in one or more wireless modules.

BACKGROUND

In the consumer electronics and computer industries, transmission ofaudio signals from a host player to remote device speakers has generallybeen accomplished over an analog, wired interface comprising speakerwires. With the advent of digital audio content, the desire to maintainthe pristine digital audio signal as far as possible along the audiosignal chain has motivated designers to pursue digital interfaces toreplace signal-loss-prone analog speaker wires.

The High-Definition Multimedia Interface (HDMI) is an all-digitalaudio/video interface capable of transmitting uncompressed streams. HDMIprovides an interface between any compatible digital audio/video source,such as a set-top box, a DVD player, a PC, a video game console, or anaudio video (A V) receiver and a compatible digital audio and/or videomonitor, such as a digital television (DTV).

FIG. 1 shows an example of a prior art audio/video multi-channel system100 that includes a source 105, e.g., an HDMI AV receiver with acentralized amplifier, connected via an HDMI cable to HDMI DVD player110 and also connected via an HDMI cable to a display 115, e.g., an HDMItelevision. The HDMI A V receiver 105 is also connected via analogspeaker wires to a set of six speakers 120, each connectedpoint-to-point from the HDMI AV receiver. Speakers 120 can be positionedto encircle a listener and create a realistic, three-dimensional audioexperience.

Although wired digital interfaces offer high quality and fidelity, theease of setup and mobility is lacking due to the constraints of thephysical connections. Wireless links, such as WiMedia® ultra-wideband(UWB), are capable of transporting data for high quality, real-timestreams, but data is only one element of a multi-channel, audiotransmission. Timing information is essential for proper reproduction ofthe real-time data stream. Accurate control of the timing of the outputof the speakers not only affects coordination of audio with a videostream, but also has an impact on distance and movement effects of thesound. For example, a slight delay in the audio output can create theeffect of a greater distance between the listener and the origin of thesound.

Clock transportation and reproduction is typically not addressed bywireless links. Wired links transmit a clock signal to the variousmodules, but transmitting a clock signal wirelessly is typically limitedin accuracy.

SUMMARY

A method and apparatus are described for regenerating a local clockwithin a wireless module and synchronizing the local clock with awireless host clock. For one embodiment, the wireless module generates alocal clock, counts the cycles of the clock during a common timingreference period maintained wirelessly between the wireless module andthe host, receives a count of the host clock during the same commontiming reference period, and adjusts the local clock signal based upon acomparison of the two counts. For one embodiment, the wireless modulefurther receives timing references from the host and, in addition,receives packets of audio samples from the host accompanied by atimestamp, the timestamp based upon the host timing reference, andoutputs the audio sample at the time designated by the timestamp.

Other features and advantages of embodiments of the present inventionwill be apparent from the accompanying drawings and from the detaileddescription that follows.

BRIEF DESCRIPTION OF THE DRAWINGS

Embodiments of the present invention are illustrated by way of exampleand not limitation in the figures of the accompanying drawings, in whichlike references indicate similar elements, and in which:

FIG. 1 shows a block diagram of an exemplary prior art, multi-channelaudio/video system with various components connected by wire.

FIG. 2 shows a block diagram of an exemplary wireless multi-channelaudio/video system in which an embodiment of the invention isimplemented.

FIG. 3 shows a block diagram of an exemplary speaker in which anembodiment of the invention is implemented.

FIG. 4 shows block diagrams of the host and wireless module according toone embodiment of the invention.

FIG. 5 shows an exemplary flow chart for a method for regenerating andsynchronizing a local clock within a wireless module according to oneembodiment of the invention.

DETAILED DESCRIPTION

Embodiments of a method and apparatus for wireless clock regenerationand synchronization are described. For one embodiment, the wirelessmodule generates a local clock, counts the cycles of the clock during acommon timing reference period maintained wirelessly between thewireless module and the host, receives a count of the host clock duringthe same common timing reference period, and adjusts the local clocksignal based upon a comparison of the two counts. For one embodiment,the wireless module further receives timing references from the hostand, in addition, receives packets of audio samples from the hostaccompanied by a timestamp, the timestamp based upon the host timingreference, and outputs the audio sample at the time designated by thetimestamp.

FIG. 2 shows a block diagram of an exemplary wireless, multi-channelaudio/video system 200 in which an embodiment of the invention isimplemented. Host 205 includes an A V receiver with a wireless hostmodule. The Host 205 may include the functionality of a HDMI AV receivercompatible with HDMI components. For one embodiment, the audio/videosystem 200 further includes a plurality of wireless speakers 220 eachincluding a wireless module to enable communication with the host AVreceiver 205. The wireless modules and host may communicateunidirectionally or bidirectionally. For another embodiment, eachwireless speaker 220 further includes an amplifier matched to a driverof the respective speaker to optimize the frequency response of thedriver.

For one embodiment, the audio/video multi-channel system 200 includes anAV receiver 205 connected via cable to DVD player 210 and a television(TV) 215. For one embodiment, the DVD player 210 is omitted or replacedby another AV device, for example, a television broadcast receiver. Foranother embodiment, one or more of the AV devices, such as the AVReceiver 205, DVD player 210, and TV 215, are integrated within a singledevice. This consolidation is possible within the wireless audiotopology because a major portion of the AV receiver functionality, acentralized amplifier for the speakers, is distributed to each of thespeakers. For an alternative embodiment, a wireless host module resideswithin one or more of the other AV devices.

For one embodiment, the topology between host and wireless modules ispoint-to-multipoint, implemented via Ultra Wide Band (UWB) host/devicearchitecture. Embodiments of the invention are described in reference tothe wireless transmission of audio data. Nevertheless, the wirelessclock generation and synchronization described herein applies to thewireless transmission of other data as well, for example, video data.

For one embodiment, the host 205 and wireless devices 220 have theability for bidirectional communications over the wireless link, asdepicted with the wireless beacon-like icons. The majority of the datatransferred in an audio application is from the host 205 to the wirelessdevices 220. Nevertheless, important data is transmitted by the wirelessdevices 220, such as a beacon to coordinate a common timing reference,acknowledgements of data transfers, application-specific information,etc.

Host 205 also includes Control Logic 405, described in more detailbelow.

FIG. 3 shows a block diagram of an exemplary wireless speaker 220 inwhich an embodiment of the invention is implemented. The wirelessspeaker 220 includes a wireless module (WM) 300. For one embodiment, theWM 300 receives wireless audio data and auxiliary packets from the Host205 and other wireless devices, as well as transmits auxiliaryinformation to the Host 205 and other wireless devices. For oneembodiment, the wireless speaker 220 includes an audio digital-to-analogconverter (DAC) 305, which takes in the digital audio data from the WM300, and converts it to analog. The DAC 305 sends the analog signal tothe audio amplifier 310, which can be specifically designed to match thespeaker driver 320, as it is resident in the same enclosure as thespeaker driver 320 in this topology. Finally, speaker 320 outputs theanalog audio data.

Wireless module 300 also includes Control Logic 420, described in moredetail below.

FIG. 4 shows block diagrams of the host and WM according to oneembodiment of the invention. Host device 400 includes Control Logic 405to manage the operation of Host device 400. Control Logic 405 receives adata stream and sends packetized data to Radio 410 to be transmitted toa WM 300. In addition to data packets, Control Logic 405 generates atimestamp that accompanies the data packet transmitted to the WM 300.For one embodiment, the data packet is composed of audio samples and atimestamp that indicates when the first audio sample of the data packetis to be played with respect to the host timing reference. For analternative embodiment, the data packet is composed of video samples anda timestamp that indicates when the first video sample of the datapacket is to be played with respect to the host timing reference. Forone embodiment, the timestamp is based upon a host clock. For analternate embodiment, the timestamp is based upon a derivative of thehost clock.

For one embodiment, Control Logic 405 includes a host clock. For analternate embodiment, the Control Logic 405 receives a host clock signalalong with the real-time data stream. For one embodiment, the Host 400uses the host clock and a beacon pulse to wirelessly maintain a commontiming reference. For one embodiment, the Radio 410 generates andtransmits a beacon pulse as a control signal to one or more WM's 300 ata regular, predetermined period. For example, for one embodiment, theRadio 410 broadcasts a beacon pulse every 65 milliseconds. For analternate embodiment, the Control Logic 405 generates a beacon pulse tobe transmitted by the Radio 410 as a control signal to one or more WM's300 at a regular, predetermined period of the host clock.

Although FIG. 4 only includes a single WM 300, one embodiment includes aplurality of WM's 300, e.g., as shown in FIG. 2. The WM 300 includes aRadio 415 to receive data packets and associated timestamps and send andreceive control signals, e.g., a beacon pulse used as a common timingreference. The WM 300 further includes Control Logic 420. For oneembodiment, the data packets contain audio samples and Control Logic 420processes the received data stream to send the data packets to beoutputted by a speaker at a time based upon the received timestampsassociated with the data packets. For one embodiment, the WM 300 outputsthe audio samples at the time indicated by the timestamp. For analternate embodiment, the WM 300 outputs the audio samples at a timeindicated by the timestamp plus or minus a predetermined or programmabledelay. The WM 300 uses a local clock to determine the timing of the datastream according to the timestamps. To achieve accurate timing and highquality sound, the local clock and Host clock are synchronized.

For one embodiment, the WM 300 utilizes a voltage-controlled crystaloscillator (VCXO) 425 and a phase-locked loop (PLL) 430 to generate alocal clock signal and synchronize it with the Host clock. For oneembodiment, WM 300 is preprogrammed with the frequency, or a derivativethereof, of the Host clock. For an alternate embodiment, Host 400transmits the frequency, or a derivative thereof, of the Host clock toone or more WM's 300 and Control Logic 420 sets the local clockfrequency based upon the received transmission. For yet anotherembodiment, Control Logic 420 determines the Host clock frequency fromone or both of the data packets and timestamp received from the Host 400and sets the local clock frequency based upon the determination.

For one embodiment, Control Logic 420 sends a control voltage to theVCXO 425 and PLL control signals to the PLL 430 to generate andfine-tune the local clock at a desired frequency. For one embodiment,the PLL 430 output will be very close to the desired frequency but willnot track the Host clock exactly due to minute dynamic variations thatresult in clock drift. For example, the desired frequency for both theHost clock and the local clock may be 96,000 Hz, but the actualfrequency of the Host clock may be 95,999 Hz and the actual frequency ofthe local clock may be 96,001 Hz. To overcome the resulting clock drift,the Control Logic 420 makes fine and unique corrections via the VCXO 425by referencing a common timing period.

For one embodiment, the Radio 415 generates and transmits a beacon pulseat the same predetermined period as the Radio 410 to maintain the commontiming reference. For one embodiment, WM 300 is preprogrammed with thepredetermined period. For an alternate embodiment, Host 400 transmitsthe predetermined period to a WM 300 and the Control Logic 420 sets theperiod based upon the received transmission. For yet another embodiment,the WM receives a plurality of beacon pulses from the Host 400 and theControl Logic 420 determines the beacon period and sets the WM beaconperiod accordingly.

For one embodiment, a common beacon period is maintained by the Host 400and WM's 300 transmitting a beacon pulse based on the predeterminedperiod. The devices will receive the beacon pulses from one another. Forone embodiment, the devices use a predetermined algorithm to maintain aminimum variation in the time between the transmission of the firstbeacon pulse and the last beacon pulse. For example, the system mayrequire the Host 400 and all WM's 300 to transmit a beacon pulse withina six millisecond window and, if any device falls outside of thatwindow, one or more of the devices delay the timing of their individualbeacon pulses to more closely match the timing of the beacon pulse thatwas last in time.

For one embodiment, the WM 300 determines variations between the localclock and the Host clock by counting a number of local clock cycles thatoccur during the predetermined beacon period and comparing the countagainst a similar count performed by the Host 400. The Host 400transmits a count of the Host clock, or a derivative thereof, to a WM300. For one embodiment, the Host clock control transmission includesboth the number of Host clock cycles during a beacon period and adesignation of the beacon period, e.g., quantized to the periodic beaconinterval, as the clock count. For an alternate embodiment, thetransmitted count includes a total accumulation of Host clock cycles.During an initialization of a WM 300, the Control Logic 420 will discardits own count and set the WM count to match count received from the Host400. Once the WM 300 has been initialized, Control Logic 420 willcompare its own count against the received Host count and adjust thelocal clock accordingly. For example, if the Host count is greater thanthe WM count, the local clock is slow. Similarly, if the Host count isless than the WM count, the local clock is fast.

For an alternate embodiment, another programmable oscillator that issuitable for clock regeneration, such as a voltage-controlled oscillator(VCO), a temperature-compensated VCXO (TCVCXO), a digitally controlledoscillator (DCO), or other programmable oscillator known in the art. Foran alternative embodiment a delay-locked loop (DLL) or similar circuitknown in the art is used instead of a PLL. For yet another embodiment, aprogrammable oscillator can be omitted if the PLL 430 has fine enoughcontrol. The PLL would not be programmed to the exact frequency of theHost clock, but rather would “ping-pong” between two settings close tothe frequency, resulting in a time average that would match the Hostclock. This may result in wider frequency variations, depending on thelevel of control offered by the PLL. Nevertheless, data rate convertertechnology such as sample rate converters for audio and scalers andframe rate converters for video may be used to eliminate the resultingjitter to achieve an acceptable synchronization.

FIG. 5 shows an exemplary flow chart for a method for regenerating andsynchronizing a local clock within a WM according to one embodiment ofthe invention. At block 500, a common timing reference between the Host400 and WM 300 is established and maintained. At block 505, the Host 400transmits the Host clock frequency, or a derivative thereof, to the WM300. At block 510, WM 300 generates a local clock frequency at the samefrequency, or derivative thereof, as the Host clock. At block 515, Host400 counts the number of Host clock cycles during an initial period ofthe common timing reference. At block 520, the Host 400 transmits theinitial count and a timestamp reference to the common timing referenceand the WM 300 sets its own count to match the Host count. At block 525,both the Host 400 and the WM 300 continue the count based upon their ownrespective clock cycles during the common timing reference period. Atblock 530, the Host 400 transmits the Host clock count to the WM 300 andthe WM compares the Host clock count with the local clock count. Atblock 535, if the WM 300 determines that the counts are equal, themethod continues and both the Host 400 and WM 300 continue their clockcounts in another common timing reference period. If the WM 300determines that the counts are not equal, at block 540, the WM 300adjusts its local clock accordingly to match the Host clock more closelyand the Host 400 and WM 300 continue their clock counts in anothercommon timing reference period.

In the foregoing specification, the invention has been described withreference to specific exemplary embodiments thereof It will be evidentthat various modifications may be made thereto without departing fromthe broader spirit and scope of the invention. The specification anddrawings are, accordingly, to be regarded in an illustrative senserather than a restrictive sense.

What is claimed is:
 1. A method comprising: receiving at a wirelessmodule a signal representing a host clock having a host clock frequency;generating a local clock signal having a local clock frequency withinthe wireless module; setting the local clock frequency based on the hostclock frequency; establishing a timing reference period common to thewireless module and a host to form a common timing reference, whereinthe common timing reference is maintained wirelessly over a wirelesslink by receiving at least two signals representing beacons as controlsignals, and establishing the timing reference period as a beacon periodbetween the two signals representing the beacons; receiving, from thehost over the wireless link, host clock count during a period of thecommon timing reference; and adjusting the local clock signal based uponthe host clock count to form an adjusted local clock signal.